package org.opens.dao;

import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Collection;
import org.apache.ibatis.annotations.Mapper;
import org.opens.entity.GenCode2Entity;
import java.io.Serializable;

/**
 * @author zhangyuming
 * @data 2023-03-08
 */
@Mapper
public interface GenCode2Dao {

    //---------增(start)---------
    /**
     * 插入
     * - 向数据库插入null时, mybatis要求必须指定jdbcType属性, 否则会报错
     * @param genCode2Entity 待插入的数据
     */
    int insert(@Param(value = "genCode2Entity") GenCode2Entity genCode2Entity);

    /**
     * 批量插入
     * - 向数据库插入null时, mybatis要求必须指定jdbcType属性, 否则会报错
     * @param genCode2Entitys 待插入的所有数据
     */
    int insertBatch(@Param(value = "genCode2Entitys") List<GenCode2Entity> genCode2Entitys);
    //---------增(end)---------

    //---------删(start)---------
    /**
     * 根据主键删除
     * @param id 主键
     */
    int deleteById(@Param(value = "id") Serializable id);

    /**
     * 根据主键批量删除; 当idList为null或者空时不删除任何数据(where条件为1=2, 避免全表删除)
     * @param idList 主键集合
     */
    int deleteBatchIds(@Param(value = "idList") Collection<? extends Serializable> idList);
    //---------删(end)---------

    //---------改(start)---------
    /**
     * 根据主键更新非空字段
     * @param genCode2Entity 待更新的数据
     */
    int updateById(@Param(value = "genCode2Entity") GenCode2Entity genCode2Entity);
    //---------改(end)---------

    //---------查(start)---------
    /**
     * 根据主键查找数据
     * @param id 主键
     */
    GenCode2Entity selectById(@Param(value = "id") Serializable id);

    /**
     * 根据主键集合批量查找数据
     * @param idList 主键集合
     */
    List<GenCode2Entity> selectBatchIds(@Param(value = "idList") Collection<? extends Serializable> idList);

    /**
     * 动态条件查找
     * @param genCode2Entity 动态条件
     */
    List<GenCode2Entity> selectByDynamicCondition(@Param(value = "genCode2Entity") GenCode2Entity genCode2Entity);

    /**
     * 动态条件count
     * @param genCode2Entity 动态条件
     */
    int countByDynamicCondition(@Param(value = "genCode2Entity") GenCode2Entity genCode2Entity);

    /**
     * 动态条件判断是否存在
     * @param genCode2Entity 动态条件
     */
    boolean existsByDynamicCondition(@Param(value = "genCode2Entity") GenCode2Entity genCode2Entity);
    //---------查(end)---------

}